<?php
defined('APP') or die('Hacking attemp!');

class Core_Router
{
    public static $controller;
    public static $action;
    public static $param;

    public static function loader()
    {
        self::getController(); //Gọi hàm getController() để tìm control và action theo url
        $classname = 'Controller_' . ucfirst(self::$controller);
        $controller = new $classname();
        if(! is_callable(array($controller, self::$action))) {
            $action = 'index';
        } else {
            $action = self::$action;
        }
        $controller->$action(self::$param);
    }

    private static function getController()
    {
        $uri = str_replace($_SERVER['SCRIPT_NAME'], '', $_SERVER['PHP_SELF']);
        $control = $action = $param = '';
        if(preg_match('#^/?(?P<control>[\w]+)?(?:/(?P<action>[\w]+))?(?:/(?P<param>[\d]+))?#', $uri, $matches)) {
            extract($matches);
        }
        self::$controller = (empty($control)) ? 'index' : $control; //Nếu không có $control trong url thì sẽ lấy mặc định là controler index
        self::$action = (empty($action)) ? 'index' : $action; //Nếu không có $action trong url thì sẽ lấy mặc định là action index
        self::$param = (empty($param)) ? '' : $param;
    }
}